<?php


// 定义 多应用模式 目录名
if( isset($_REQUEST[ $GLOBALS['config']['var_pathinfo'] ]) && $_REQUEST[ $GLOBALS['config']['var_pathinfo'] ]!='' ){
    $s= explode( '/' ,  $_REQUEST[ $GLOBALS['config']['var_pathinfo'] ] );

    if(in_array( $s[0] , _MODULES_ ) ){
        defined('_ADDONS_NAME_') or define('_ADDONS_NAME_',  'system' );
    }else{
        defined('_ADDONS_NAME_') or define('_ADDONS_NAME_',  'application' );
    }
}else{
    defined('_ADDONS_NAME_') or define('_ADDONS_NAME_',  'application' );
}


// 应用默认模块
if( isset( $_REQUEST[ $GLOBALS['config']['var_pathinfo'] ]) && $_REQUEST[ $GLOBALS['config']['var_pathinfo'] ]!='' ){ 
    $app= $s[0];
}else{

    //$app = _ADDONS_NAME_ == 'system' ? 'platform' : 'cms';
    if( _ADDONS_NAME_ == 'system' ){
            $app = 'platform' ;  
    }else{
        if( isset( $GLOBALS['config']['应用入口']['app'] ) && $GLOBALS['config']['应用入口']['app']!='' ){
            $app = $GLOBALS['config']['应用入口']['app'];
        }else{
            $app = '_empty_app';
        }    
    }

}

if( $app!='_empty_app' && !is_dir( _APP_PATH_ . '/' . _ADDONS_NAME_ . '/' .$app )  ){
    exit( '未发现应用目录' ); 
}


// 应用模块名字，应用目录名
defined('_MODULE_NAME_') or define('_MODULE_NAME_', $app );
// 定义 当前应用模块绝对路径  例：D:/wamp/www/deep_phpwork/application/cms
defined('_MODULE_PATH_') or define('_MODULE_PATH_', _APP_PATH_ . '/' . _ADDONS_NAME_ . '/' .$app );
// 定义 当前应用模块url路径  例：http://localhost/deep_phpwork/application/cms
defined('_MODULE_URL_') or define('_MODULE_URL_', _APP_URL_  . '/' . _ADDONS_NAME_ . '/' .$app );

// 定义全局变量 application下当前应用模块信息 
if( file_exists(_APP_PATH_ . "/application/" . _MODULE_NAME_ . "/manifest.php")){
    $GLOBALS['config']['module'] =  require _APP_PATH_ . "/application/" . _MODULE_NAME_ . "/manifest.php";
    $GLOBALS['config']['module'] = $GLOBALS['config']['module']['application']; 
}



// 应用 - 类控制器
if( isset( $s[1] ) && $s[1]!=''  ){ 
    $controller= str_replace('.','/',$s[1] );
}else{
    $controller = 'index';
}

if( $controller!='index' && !file_exists( _APP_PATH_ . '/' . _ADDONS_NAME_ . "/$app/controller/{$controller}.php")){
    exit( '未发现控制器文件' ); 
}

// 检查应用模块是否安装
if( _ADDONS_NAME_ == 'application' && $app!='_empty_app'){
    $sql="select * from " . tablename('sys_module') . " where identifie = '$app' ;";
    $ret =  $GLOBALS['db']->query($sql) ;
    if( $ret->fetch()== false ){
        exit( '应用模块未发现' );
    }
}


// 应用 - 类控制器 - 方法
if( isset( $s[2] ) && $s[2]!=''  ){ 
    $action= $s[2];
}else{
    $action = 'index';
}

////////////////////////////////////////////////
// 条件判断
// 模块后台验证是否登录
if( (_ADDONS_NAME_ != 'system' && stripos( $controller , 'admin/')!==false )
	|| (_ADDONS_NAME_ == 'system' && in_array( $app , _MODULES_AUTH_ ) && $controller != 'index') ){
   require _APP_PATH_ . "/system/platform/auth.inc.php";
}


// 默认入口跳转
if( $app == '_empty_app' && $controller == 'index' && $action == 'index' ){
    header('location:' . url(['platform','index','index']) );
    exit();
}


////////////////////////////////////////////////
// 控制器文件
require _APP_PATH_ . '/' . _ADDONS_NAME_ . "/{$app}/controller/{$controller}.php";

$controller= str_replace('/','\\',$controller);
//反射
//$o= new \ReflectionClass( 'application\\'.$app.'\\controller\\'.$controller);
//$o->newInstanceArgs()->$action();
$class= _ADDONS_NAME_ . '\\'.$app.'\\controller\\'.$controller ;
$o = new $class();
$o->$action();
